// 网站首页，文件上传练习的路由器模块

// 1. 导入express
const express = require("express");
const picModel = require("../models/picModel");
const fs = require("fs");
// 导入文件上传组件包
const formidable = require('formidable');
const path = require("path");
// 2. 创建路由器对象
const router = express.Router();
// 3. 配置当前信息管理的路由
//(get /) 网站首页
router.get("/", (req, res) => {
    // 从mongodb中获取当前相册信息
    picModel.find({}, (err, data) => {
        res.render("pic/index", {picList:data});
    });
});
//(get /upload) 文件上传表单
router.get("/upload", (req, res) => {
    res.render("pic/upload");
});
//(post /doupload) 执行文件上传处理
router.post("/doupload",(req, res) => {
    // 处理文件上传
    //1. 创建表单对象
    const form = formidable({
        //设置文件保存的目录
        uploadDir: path.join(__dirname, '../public/images'),
        // 保留文件后缀名
        keepExtensions: true
    });
    //2. 解析表单
    //fields 字段. 一般表单元素的信息
    //files  文件. 文件上传的信息
    form.parse(req, (err, fields, files) => {
        if (err) {
          console.log(err);
          return;
        }
        // 将文件上传的信息和表单字段信息整合
        const data = {...fields, ...files.mypic}
        data.mtime = data.lastModifiedDate;
        //console.log(data);
        //res.json({data});
        //res.send("ok");
        // 执行相册信息添加
        picModel.create(data,(err, data) => {
            if(err) throw err;
            console.log(data); // 添加成功的数据。
            res.send("添加成功！");
        });
        
    });
});

//(get /del) 执行相册信息的处理
router.get("/del",(req, res) => {
    // 获取要删除的id信息
    let id = req.query.id
    // 获取要删除的信息，从中获取要删除的图片名
    picModel.findById(id, (err, data)=>{
        if(err) throw err;
        // 删除数据(mongodb操作)
        // 通过id执行picModel删除相册信息
        picModel.remove({_id:id}, (err, data) => {});
        // 删除图片（文件操作）
        fs.unlinkSync(path.join(__dirname, "../public/images/"+data["newFilename"]));
        res.send("删除成功！");

    });
;});


// 4. 导出
module.exports = router;